This disclosure is directed to computer systems. More particularly, it is directed to the secure communications within a computing environment.
Elements within a computing environment (executable components, applications, processes, etc.) may communicate with each other through secure techniques, such as encryption. For instance, a first element may encrypt data before providing that data to a second element within the computing environment. In conventional systems, a shared secret (e.g., a symmetric encryption key) may be provided to both elements to enable encrypted communications between such elements. Within the context of the previous example, the first element may encrypt the data with its shared secret and provide the encrypted data to the second element. The second element may decrypt the data with its shared secret. In this way, other elements within the computing environment will not be able to determine the clear version of the data because such elements do not possess the shared secret. In some instances, these elements may operate within an environment that cannot ensure the secrecy of the shared secret. For instance, an attacker or malicious application may utilize a debugger to inspect an element to determine that element's shared secret. Mechanisms such as code obfuscation may prevent casual observers from deciphering the shared secret; secrecy of shared secrets when faced with a detailed inspection of an element may not be guaranteed. In some cases, once a shared secret has been comprised, any element that has access to the compromised secret may decipher the clear version of data or information protected with that secret.